package br.com.vendas.menu.filme.crud.atualizar;

import static br.com.vendas.utils.ValidatorUtil.isNotEmpty;

import java.io.IOException;

import br.com.vendas.dao.FilmeDAO;
import br.com.vendas.dao.impl.FilmeImpl;
import br.com.vendas.dominio.Filme;
import br.com.vendas.exception.ArqException;
import br.com.vendas.menu.ItemMenu;
import br.com.vendas.menu.filme.crud.consulta.ConsultorFilme;
import br.com.vendas.menu.filme.crud.consulta.ItemOpcoesConsultaFilme;

public class ItemAtualizarFilme extends ItemMenu implements ConsultorFilme {
	private Filme filme;

	@Override
	public int getId() {
		return 2;
	}

	@Override
	public String getNome() {
		return "Atualizar Filme";
	}

	@Override
	protected void processamento() throws IOException, ArqException {
		entrarConsultarFilme();
	}

	@Override
	public void entrarConsultarFilme() throws IOException, ArqException {
		ItemOpcoesConsultaFilme consulta = new ItemOpcoesConsultaFilme(this);
		consulta.processar();
	}

	@Override
	public void setFilmeConsultado(Filme filme) throws ArqException {
		this.filme = filme;
		
		finalizaSelecaoFilme();
	}

	@Override
	public void finalizaSelecaoFilme() throws ArqException {
		System.out.println("Atualize os dados (Caso nao queira atualizar, aperte apenas 'Enter'):");
		
		System.out.print(String.format("Nome (%s): ", filme.getNome()));
		String nomeFilme = getDadosUsuario();
		
		System.out.print(String.format("Preco (%f): ", filme.getPreco()));
		String preco = getDadosUsuario();
		
		System.out.print(String.format("Nome (%s): ", filme.getSinopse()));
		String sinopse = getDadosUsuario();
		
		if( isNotEmpty(nomeFilme) )		filme.setNome( nomeFilme );
		if( isNotEmpty(preco) )			filme.setPreco( new Double(preco) );
		if( isNotEmpty(sinopse) )		filme.setSinopse( sinopse );
		
		FilmeDAO dao = new FilmeImpl();
		dao.update(filme);
		
		exibirMenuPrincipal();
	}
	
}
